import { DD_SYSTEM } from '@/constants/api-pre';
import { request } from '@/service/request';

/** 岗位 */
export type Post = Api.Common.CommonRecord<{
  /** 岗位 id */
  id: number;
  /** 岗位名称 */
  name: string;
  /** 岗位编码 */
  code: string;
  /** 岗位描述 */
  remark: string;
  /** 岗位排序 */
  sort: number;
  /** 岗位创建时间 */
  createTime: Date;
}>;

/** 岗位查询参数 */
export type PostSearchParams = CommonType.RecordNullable<
  Pick<Post, 'name' | 'code' | 'status'> & Api.Common.CommonSearchParams
>;

export type PostEditAndCreateParams = CommonType.RecordNullable<Exclude<Post, 'createTime'>>;

/** 岗位列表 */
export type PostList = Api.Common.PaginatingQueryRecord<Post>;

/** 获取岗位表单 URL */
export function getFetchPostUrl(id: number) {
  return `${DD_SYSTEM}/post/${id}/form`;
}

/** 获取岗位列表 */
export function fetchGetPostsList(params?: PostSearchParams) {
  return request<PostList>({
    url: `${DD_SYSTEM}/post/page`,
    method: 'get',
    params
  });
}

/**
 * 获取所有岗位
 *
 * these roles are all enabled
 */
export function fetchAllPostsOptions() {
  return request<Api.Common.Options[]>({
    url: `${DD_SYSTEM}/post/options`,
    method: 'get'
  });
}

/**
 * 删除岗位
 *
 * @param ids
 */
export function deletePosts(ids: string) {
  return request<boolean>({
    url: `${DD_SYSTEM}/post/${ids}`,
    method: 'delete'
  });
}

/**
 * 编辑岗位
 *
 * @param id
 * @param data
 */
export function updatePost(id: number, data?: PostEditAndCreateParams) {
  return request<boolean>({
    url: `${DD_SYSTEM}/post/${id}`,
    method: 'put',
    data
  });
}

/**
 * 新增岗位
 *
 * @param data
 */
export function createPost(data: PostEditAndCreateParams) {
  return request<boolean>({
    url: `${DD_SYSTEM}/post`,
    method: 'post',
    data
  });
}
